home *** CD-ROM | disk | FTP | other *** search
/ Enter 2010 January / ENTER_2010_01.iso / Programy / Gry / Base_Invaders_ / BaseInvadersSetup1.3.exe / {app} / Scripts / QuickStartStartup.lua < prev    next >
Encoding:
Text File  |  2007-01-25  |  4.0 KB  |  163 lines

  1. --Common Level Start Code
  2.  
  3. function LevelStartup()
  4.     G.Create( "MenuData/HudCog.xml" );
  5.     G.Create( "Data/GameCamera.xml" );
  6.     G.Create( "Data/CursorCog.xml" );
  7.  
  8.     MainLevel = G.Create( "Data/QuickStartLevelCog.xml" );
  9.     MainLevel.CreateLevel();
  10.  
  11.     G.SetInvSpeed( 20 );
  12.     G.DisableTrap("pit");
  13.     
  14.     G.SetLightTime( 0 );
  15.     G.PostP( "None" );
  16.     --TraitorTalk(" ");
  17.  
  18.         -- Editing Traps
  19.     G.DisableTrap("wall2");
  20.     G.DisableTrap("tree");
  21.     G.DisableTrap("bush");
  22.     G.DisableTrap("pinetree");
  23.     G.DisableTrap("largepinetree");
  24.     G.DisableTrap("mushroom");
  25.     G.DisableTrap("church");
  26.     G.DisableTrap("rock");
  27.     G.DisableTrap("vase");
  28.     G.DisableTrap("pitdoodad");
  29.     G.DisableTrap("bus");
  30.  
  31.     --G.SetLoopingMusic( "Music/Da_Pipes.mp3" );
  32.     -- G.PlayMusic();
  33.  
  34.     HUD.EnterLevel();
  35.     G.SetGameState( InLevel );
  36.     G.EarnPoints( 150 );
  37.  
  38.     HUD.Message( "VictoryCondition" , "SetText", "Grab invaders with your hand. \nDrop walls and traps to help defend. \nDefeat 1000 Invaders!"  );
  39.     HUD.Message( "LossCondition" , "SetText", "If the Tower falls you lose" );
  40.  
  41. ----------------------------------------    
  42. --            NEW SPAWNING STUFF
  43. ----------------------------------------
  44.  
  45.     VarietyWave = createSpawnStruct()
  46.     
  47.     VarietyWave.Prob.Miner        = 0.3;
  48.     VarietyWave.Prob.Squad        = 0.5;
  49.     VarietyWave.Prob.Bomber        = 0.2;
  50.     VarietyWave.Prob.Kamikaze    = 0.2;
  51.     VarietyWave.Prob.Driller    = 0.25;
  52.     VarietyWave.Prob.Psychic    = 0.3;
  53.     VarietyWave.Prob.Ninja        = 0.2;
  54.     VarietyWave.Prob.Spiker        = 0.25;
  55.     VarietyWave.Prob.Stacker    = 0.8;
  56.     VarietyWave.Prob.Basic        = 1.0;
  57.     
  58.     VarietyWave.SpawnSpeed        = 0.5;
  59.     VarietyWave.MaxSpawn        = 25;
  60.     VarietyWave.GroupPercent    = 0.25;
  61.     VarietyWave.GroupSize        = 3;
  62.     VarietyWave.WhereToSpawn    = CircleAroundTower
  63.  
  64.     AddWave( "VarietyAttack", VarietyWave );
  65.     
  66.  
  67.     local tempPos = Tower.GetPosition()
  68.     Camera.LookAtPosition( tempPos )    
  69.     
  70.     ColorTextPopup( "Challenge Mode!", Color(1,1,1,1) )    
  71.     
  72. end
  73.  
  74. LevelStartup()
  75.  
  76. --function LevelIntro()
  77. --end
  78.  
  79. function LevelSequence()
  80.  
  81.     -- There are several waves that have been made:
  82.     -- Randomly choose from them, and spawn the guys. 
  83.  
  84.     GameWait( 30 );
  85.     
  86.     -- For right now, just keep increasing the spawning speed:
  87.     StopWave( "VarietyAttack" );
  88.     
  89.     VarietyWave.SpawnSpeed = VarietyWave.SpawnSpeed + 0.1;    -- Max speed in -- minutes (1.0 in - minutes)
  90.     if VarietyWave.SpawnSpeed > 3 then
  91.         VarietyWave.SpawnSpeed = 3
  92.     end
  93.     
  94.     VarietyWave.MaxSpawn = VarietyWave.MaxSpawn + 2;    -- Max spawn in 6.25 minutes
  95.     
  96.     if VarietyWave.MaxSpawn > 50 then
  97.         VarietyWave.MaxSpawn = 50
  98.     end
  99.     
  100.     VarietyWave.Prob.Miner        = 0.3;
  101.     VarietyWave.Prob.Squad        = 0.5;
  102.     VarietyWave.Prob.Bomber        = 0.2;
  103.     VarietyWave.Prob.Kamikaze    = 0.2;
  104.     VarietyWave.Prob.Driller    = 0.25;
  105.     VarietyWave.Prob.Psychic    = 0.3;
  106.     VarietyWave.Prob.Ninja        = 0.2;
  107.     VarietyWave.Prob.Spiker        = 0.25;
  108.     VarietyWave.Prob.Stacker    = 0.8;
  109.     VarietyWave.Prob.Basic        = 1.0;    
  110.     
  111.     -- Special wave chance:
  112.     for invadername,prob in pairs( VarietyWave.Prob ) do
  113.         if( math.random() < 0.1 ) then                        -- 66% chance of special wave (10% -> 4% by type)
  114.             VarietyWave.Prob[ invadername ] = 10.;
  115.             ColorTextPopup( invadername .. " Wave!", Color(0,0.85,0,1) )
  116.             break
  117.         end
  118.     end    
  119.     
  120.     GameWait( 5 );
  121.     
  122.     AddWave( "VarietyAttack", VarietyWave );
  123.     
  124. end
  125.  
  126.  
  127. levelRoutine = coroutine.create( LevelSequence )    
  128.     
  129. function LevelVictory()    
  130.  
  131.     local tower = G.GetCogName("Tower");
  132.     
  133.     if( not tower.IsValid() ) then
  134.         G.SetGameState( Defeat );    
  135.     end
  136.  
  137.     if( Kills >= 1000 ) then
  138.         G.SetGameState( Victory );        
  139.         StopWave( "VarietyAttack" );
  140.         G.KillAllInvaders();--Should Do this on any timed mission
  141.     end
  142.  
  143.     -- Update the spawning stuff:
  144.     if( levelRoutine ) then    
  145.         local con, error = coroutine.resume( levelRoutine )
  146.  
  147.         -- Restart the Level Sequence:
  148.         if( con == false and GameState == InLevel ) then    
  149.             levelRoutine = coroutine.create( LevelSequence )
  150.         end
  151.     end
  152.         
  153.  
  154.             
  155.     if( not( GameState == InLevel ) ) then
  156.         dofile( "Scripts/GameOver.lua" );        -- The gameover script should do all exit functionality:
  157.         GMain["LevelVictory"] = nil;
  158.     end        
  159.     
  160. end
  161.  
  162. GMain["LevelVictory"] = LevelVictory;
  163.